package com.bwie.orders.config;

import com.bwie.common.redis.service.RedisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Collections;

/**
 * 单个skuid
 */
@Component
public class OrderConfig {
  @Autowired
  private RedisService redisService;


    public boolean testToBuy(String skuId,int buyQuantity) throws IOException {
        // 读取 Lua 脚本
        String script = new String(new ClassPathResource("lua/orders.lua").getInputStream().readAllBytes(), StandardCharsets.UTF_8);

        // 构造 Redis 键
        String key = "ProductInventoryLhc:" + skuId;

        // 封装 Lua 脚本
        DefaultRedisScript<Long> defaultRedisScript = new DefaultRedisScript<>();
        defaultRedisScript.setScriptText(script);
        defaultRedisScript.setResultType(Long.class);

        // 获取 RedisTemplate
        RedisTemplate<String, Object> redisTemplate = redisService.redisTemplate;

        // 执行 Lua 脚本
        Long result = redisTemplate.execute(defaultRedisScript, Collections.singletonList(key), buyQuantity);

        // 返回执行结果
        return result == 1;
    }
}
